package info.wangyuan.agent.common.Enum;


import lombok.Getter;

/**
 * 模型类型枚举
 * 统一管理项目中涉及的各种模型类型
 *
 * @author Albert
 * @since 2025-08-25 02:21:49
 */
@Getter
public enum ModelType {
    // ======== 大语言模型（LLM） ========
    LLM("large-language-model", "对话"),

    // ======== 视觉语言模型（VLM） ========
    VLM("vision-language-model", "对话"),

    // ======== 通用语言模型（GLM） ========
    GLM("general-language-model", "对话"),

    // ======== 向量嵌入模型 ========
    TEXT_EMBEDDING("text-embedding-model", "文本嵌入"),
    IMAGE_EMBEDDING("image-embedding-model", "图像嵌入"),
    MULTI_EMBEDDING("multi-embedding-model", "多模态嵌入"),

    // ======== 重排序模型（Reranker/Scoring） ========
    RERANK("rerank-model", "重排序"),

    // ======== 专用模型 ========
    OCR("ocr-model", "文本识别");

    private final String value;
    private final String label;

    ModelType(String value, String label) {
        this.value = value;
        this.label = label;
    }

    /** 根据数据库的 value 获取枚举 */
    public static ModelType fromValue(String value) {
        for (ModelType type : values()) {
            if (type.getValue().equals(value)) {
                return type;
            }
        }
        throw new IllegalArgumentException("未知的模型类型: " + value);
    }

    /** 直接拿到 label */
    public static String getLabelByValue(String value) {
        return fromValue(value).getLabel();
    }
}
